﻿import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { AppCommonModule } from '@app/shared/common/app-common.module';
import { UtilsModule } from '@shared/utils/utils.module';
import { AddMemberModalComponent } from 'app/admin/organization-units/add-member-modal.component';
import { FileUploadModule } from 'ng2-file-upload';
import {
  ModalModule,
  PopoverModule,
  TabsModule,
  TooltipModule
} from 'ngx-bootstrap';
import {
  AutoCompleteModule,
  EditorModule,
  FileUploadModule as PrimeNgFileUploadModule,
  InputMaskModule,
  PaginatorModule
} from 'primeng/primeng';
import { TableModule } from 'primeng/table';
import { AdminRoutingModule } from './admin-routing.module';
import { AuditLogDetailModalComponent } from './audit-logs/audit-log-detail-modal.component';
import { AuditLogsComponent } from './audit-logs/audit-logs.component';
import { EntityChangeDetailModalComponent } from './audit-logs/entity-change-detail-modal.component';
import { CreateOrEditEditionModalComponent } from './editions/create-or-edit-edition-modal.component';
import { EditionsComponent } from './editions/editions.component';
import { InstallComponent } from './install/install.component';
import { CreateOrEditLanguageModalComponent } from './languages/create-or-edit-language-modal.component';
import { EditTextModalComponent } from './languages/edit-text-modal.component';
import { LanguageTextsComponent } from './languages/language-texts.component';
import { LanguagesComponent } from './languages/languages.component';
import { MaintenanceComponent } from './maintenance/maintenance.component';
import { CreateOrEditUnitModalComponent } from './organization-units/create-or-edit-unit-modal.component';
import { OrganizationTreeComponent } from './organization-units/organization-tree.component';
import { OrganizationUnitMembersComponent } from './organization-units/organization-unit-members.component';
import { OrganizationUnitsComponent } from './organization-units/organization-units.component';
import { CreateOrEditRoleModalComponent } from './roles/create-or-edit-role-modal.component';
import { RolesComponent } from './roles/roles.component';
import { HostSettingsComponent } from './settings/host-settings.component';
import { TenantSettingsComponent } from './settings/tenant-settings.component';
import { FeatureTreeComponent } from './shared/feature-tree.component';
import { OrganizationUnitsTreeComponent } from './shared/organization-unit-tree.component';
import { PermissionComboComponent } from './shared/permission-combo.component';
import { PermissionTreeComponent } from './shared/permission-tree.component';
import { RoleComboComponent } from './shared/role-combo.component';
import { UiCustomizationComponent } from './ui-customization/ui-customization.component';
import { CreateOrEditUserModalComponent } from './users/create-or-edit-user-modal.component';
import { EditUserPermissionsModalComponent } from './users/edit-user-permissions-modal.component';
import { ImpersonationService } from './users/impersonation.service';
import { UsersComponent } from './users/users.component';

@NgModule({
  imports: [
    FormsModule,
    CommonModule,
    FileUploadModule,
    ModalModule.forRoot(),
    TabsModule.forRoot(),
    TooltipModule.forRoot(),
    PopoverModule.forRoot(),
    AdminRoutingModule,
    UtilsModule,
    AppCommonModule,
    TableModule,
    PaginatorModule,
    PrimeNgFileUploadModule,
    AutoCompleteModule,
    EditorModule,
    InputMaskModule
  ],
  declarations: [
    UsersComponent,
    PermissionComboComponent,
    RoleComboComponent,
    CreateOrEditUserModalComponent,
    EditUserPermissionsModalComponent,
    PermissionTreeComponent,
    FeatureTreeComponent,
    OrganizationUnitsTreeComponent,
    RolesComponent,
    CreateOrEditRoleModalComponent,
    AuditLogsComponent,
    AuditLogDetailModalComponent,
    EntityChangeDetailModalComponent,
    HostSettingsComponent,
    InstallComponent,
    MaintenanceComponent,
    EditionsComponent,
    CreateOrEditEditionModalComponent,
    LanguagesComponent,
    LanguageTextsComponent,
    CreateOrEditLanguageModalComponent,
    CreateOrEditLanguageModalComponent,
    EditTextModalComponent,
    OrganizationUnitsComponent,
    OrganizationTreeComponent,
    OrganizationUnitMembersComponent,
    CreateOrEditUnitModalComponent,
    TenantSettingsComponent,
    AddMemberModalComponent,
    UiCustomizationComponent
  ],
  exports: [AddMemberModalComponent],
  providers: [ImpersonationService]
})
export class AdminModule {}
